iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 24
1
自我挑戰組

ROS自學筆記系列 第 24

Day 24 - 建立並使用自定義的srv file

  • 分享至 

  • xImage
  •  

今天小妹久違的去游了一波泳,好懷念學校20塊的游泳池啊~~~ 覺得除了研究技術以外,擁有健康的身體也是非常重要的呢!

好的那麼今天來到了srv的部分,也就是自定義一種service的格式啦! 因為service其實就是一組分成requestresponsemessage,所以設定的方法跟之前.msg file的一樣,因此我們就直接來建立一個新的.srv檔就好囉!

$ roscd beginner_tutorials
$ mkdir srv
$ cd srv
$ vim my_srv.srv

注意: srv檔要放在/srv的資料夾內,這樣在做catkin_make的時候才會撈的到資料喔!
那我想要做的service就是可以讓我輸入一個id,就可以找到某個人的個資!
所以我設計的my_srv.srv會長這樣:

int64 id
---
string name
string gender
int64 age

大概會長這樣吧~就是輸入某個人的id,就可以知道他的名字、性別跟年紀。
接著找到CMakeList.txt內關於編譯新srv檔的註解:

# add_service_files(
#   FILES
#   Service1.srv
#   Service2.srv
# )

將這些註解打開,並加入我們的my_srv.srv檔案,所以改完以後會長這樣:

add_service_files(
  FILES
  my_srv.srv
)

設定完以後,回到package的根目錄執行catkin_make,就可以看到他自動幫我們建立my_srv格式的service囉!
catkin_make執行畫面
可以看到跟之前message一樣,建立了很多不同語言可以使用的service,是不是很方便呢!

使用rossrv list指令可以看到所有的service格式的訊息,這邊可以看到他已經幫我們在beginner_tutorials底下建立好了my_srv囉!
rossrv list執行畫面
使用rossrv show 去看這個srv,就可以看到關於此格式的訊息定義,也就是我們剛剛上面設定的requestresponse各給哪些資料:
rossrv show執行畫面

建完以後當然就是拿來用啦! 做法跟message的時候一樣,就是include/import那個模組,然後就可以使用囉! 那因為基本上跟之前做service的時候用的add_two_ints一樣,我想大家應該可以自己玩看看才對,絕對不是因為今天時間不夠的關係喔 XD


上一篇
Day 23 - 使用自定義的message (python/c++)
下一篇
Day 25 - ROS msg & srv 常用指令
系列文
ROS自學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言